home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / m / math.h < prev    next >
C/C++ Source or Header  |  1992-03-27  |  6KB  |  182 lines

  1. /*
  2.  * math.h --
  3.  *
  4.  *    
  5.  *
  6.  * Copyright 1989 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that the above copyright
  10.  * notice appear in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  * $Header: /sprite/src/lib/m/RCS/math.h,v 1.7 92/03/27 13:45:54 rab Exp $
  16.  */
  17.  
  18. #ifndef _MATH_H
  19. #define _MATH_H
  20.  
  21. #ifdef __GNUC__                 /* Use const function attribute */
  22.     /* As a non-standard extension, Gnu C will treat any function
  23.        that has a `const' attribute as a pure function.  A pure function
  24.        has no side effects, and the return value is function of the
  25.        arguments only.  If a pure function is invoked several times
  26.        with the same arguments, the compiler can optimize out all but
  27.        the first call.
  28.      */
  29. #define _CONST_FUNC  const
  30. #else
  31. #define _CONST_FUNC
  32. #endif
  33.  
  34. #define M_LN2   0.69314718055994530942
  35. #define M_PI    3.14159265358979323846
  36. #define M_SQRT2 1.41421356237309504880
  37.  
  38. #define M_E             2.7182818284590452354
  39. #define M_LOG2E         1.4426950408889634074
  40. #define M_LOG10E        0.43429448190325182765
  41. #define M_LN10          2.30258509299404568402
  42. #define M_PI_2          1.57079632679489661923
  43. #define M_PI_4          0.78539816339744830962
  44. #define M_1_PI          0.31830988618379067154
  45. #define M_2_PI          0.63661977236758134308
  46. #define M_2_SQRTPI      1.12837916709551257390
  47. #define M_SQRT1_2       0.70710678118654752440
  48. #define _POLY1(x, c)    ((c)[0] * (x) + (c)[1])
  49. #define _POLY2(x, c)    (_POLY1((x), (c)) * (x) + (c)[2])
  50. #define _POLY3(x, c)    (_POLY2((x), (c)) * (x) + (c)[3])
  51. #define _POLY4(x, c)    (_POLY3((x), (c)) * (x) + (c)[4])
  52. #define _POLY5(x, c)    (_POLY4((x), (c)) * (x) + (c)[5])
  53. #define _POLY6(x, c)    (_POLY5((x), (c)) * (x) + (c)[6])
  54. #define _POLY7(x, c)    (_POLY6((x), (c)) * (x) + (c)[7])
  55. #define _POLY8(x, c)    (_POLY7((x), (c)) * (x) + (c)[8])
  56. #define _POLY9(x, c)    (_POLY8((x), (c)) * (x) + (c)[9])
  57.  
  58. #ifdef __STDC__
  59.  
  60. #if defined(sun3) && !defined(__STRICT_ANSI__) && !defined(__SOFT_FLOAT__)
  61.  
  62. #include <math-68881.h>
  63.  
  64. #else
  65.  
  66. extern _CONST_FUNC double    sin(double x);
  67. extern _CONST_FUNC double    cos(double x);
  68. extern _CONST_FUNC double    tan(double x);
  69. extern _CONST_FUNC double    asin(double x);
  70. extern _CONST_FUNC double    acos(double x);
  71. extern _CONST_FUNC double    atan(double x);
  72. extern _CONST_FUNC double    atan2(double y, double x);
  73. extern _CONST_FUNC double    sinh(double x);
  74. extern _CONST_FUNC double    cosh(double x);
  75. extern _CONST_FUNC double    tanh(double x);
  76. extern _CONST_FUNC double    exp(double x);
  77. extern _CONST_FUNC double    log(double x);
  78. extern _CONST_FUNC double    log10(double x);
  79. extern _CONST_FUNC double    pow(double x, double y);
  80. extern _CONST_FUNC double    sqrt(double x);
  81. extern _CONST_FUNC double    ceil(double x);
  82. extern _CONST_FUNC double    floor(double x);
  83. extern _CONST_FUNC double    fabs(double x);
  84. extern _CONST_FUNC double    ldexp(double x, int n);
  85. extern _CONST_FUNC double    fmod(double x , double y);
  86. extern double           frexp(double x, int *exp);
  87. extern double           modf(double x, double *ip);
  88.  
  89. extern _CONST_FUNC double    atanh(double x);
  90. extern _CONST_FUNC double    asinh(double x);
  91. extern _CONST_FUNC double    acosh(double x);
  92. extern _CONST_FUNC double    expm1(double x);
  93.  
  94. #endif
  95.  
  96. extern _CONST_FUNC double    erf(double x);
  97. extern _CONST_FUNC double    erfc(double x);
  98. extern _CONST_FUNC double    log1p(double x);
  99. extern _CONST_FUNC double    rint(double x);
  100. extern _CONST_FUNC double    lgamma(double x);
  101. extern _CONST_FUNC double    hypot(double x, double y);
  102. extern _CONST_FUNC double    cabs();
  103. extern _CONST_FUNC double    copysign(double x, double y);
  104. extern _CONST_FUNC double    drem(double x, double y);
  105. extern _CONST_FUNC double    logb(double x);
  106. extern _CONST_FUNC double    scalb(double x, int n);
  107. extern _CONST_FUNC double    j0(double x);
  108. extern _CONST_FUNC double    j1(double x);
  109. extern _CONST_FUNC double    jn(int n, double x);
  110. extern _CONST_FUNC double    y0(double x);
  111. extern _CONST_FUNC double    y1(double x);
  112. extern _CONST_FUNC double    yn(int n, double x);
  113. extern _CONST_FUNC double    cbrt(double x);
  114.  
  115. extern int finite(double x);
  116.  
  117. extern int isinf(double x);
  118. extern int isnan(double x);
  119.  
  120. #else /* __STDC__ */
  121.  
  122. extern double   sin();
  123. extern double   cos();
  124. extern double   tan();
  125. extern double   asin();
  126. extern double   acos();
  127. extern double   atan();
  128. extern double   atan2();
  129. extern double   sinh();
  130. extern double   cosh();
  131. extern double   tanh();
  132. extern double   exp();
  133. extern double   log();
  134. extern double   log10();
  135. extern double   pow();
  136. extern double   sqrt();
  137. extern double   ceil();
  138. extern double   floor();
  139. extern double   fabs();
  140. extern double   ldexp();
  141. extern double   fmod();
  142. extern double   frexp();
  143. extern double   modf();
  144. extern double   asinh();
  145. extern double   acosh();
  146. extern double   atanh();
  147. extern double   erf();
  148. extern double   erfc();
  149. extern double   expm1();
  150. extern double   log1p();
  151. extern double   rint();
  152. extern double   lgamma();
  153. extern double   hypot();
  154. extern double   cabs();
  155. extern double   copysign();
  156. extern double   drem();
  157. extern double   logb();
  158. extern double   scalb();
  159. extern double   j0();
  160. extern double   j1();
  161. extern double   jn();
  162. extern double   y0();
  163. extern double   y1();
  164. extern double   yn();
  165. extern double   cbrt();
  166. extern int finite();
  167. extern int isinf();
  168. extern int isnan();
  169.  
  170. #endif /* __STDC__ */
  171.  
  172. #ifndef HUGE_VAL
  173. #define HUGE_VAL    1.701411733192644270e38
  174. #endif
  175.  
  176. #define HUGE        HUGE_VAL
  177.  
  178. #undef _CONST_FUNC
  179.  
  180. #endif /* _MATH_H */
  181.  
  182.